<?php

namespace libraries\common\Common;

class Common{

	
	//ȡ�ļ���׺��
	static function extname($str){
		return substr(strtolower(strrchr($str,'.')), 1);
	}
	
	//ȡ�ļ��� ���� ldfjsld.jpg ���Ϊ��ldfjsld
	static function filename($str){
		return substr($str, 0, strrpos($str, "."));	
	}
	
	//URL��ȫ��base64���ܣ�+��-   /��_ ȥ����=����
	static function enurl64($data) { 
		return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); 
	}
	
	//URL��ȫ��base64����
	static function deurl64($data) { 
		return base64_decode(strtr($data, '-_', '+/'));
	}
	
	//����ת�ļ�
	static function a2f($file, $array){
		file_put_contents($file, "<?php \r"."return ".var_export($array, TRUE).";\r?>");
	}
	
	//�õ�����IP
	static function getip(){
		if(!empty($_SERVER["HTTP_CLIENT_IP"])){
		  $cip = $_SERVER["HTTP_CLIENT_IP"];
		}elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
		  $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
		}elseif(!empty($_SERVER["REMOTE_ADDR"])){
		  $cip = $_SERVER["REMOTE_ADDR"];
		}else{
		  $cip = "�޷���ȡ��";
		}
		return $cip;
	}
	
	//��ȡ�����ַ�����ʱ��������ְ���ַ���������룬�ô˺����ɱ���
	static function zhsubstr_gb2312($str, $len){
		if(strlen($str) <= $len){
			return mb_strcut($str, 0, $len,'gb2312');
		}else{
			return mb_strcut($str, 0, $len-2,'gb2312')."..";
		}
	}
	
	//��ȡ�����ַ�����ʱ��������ְ���ַ���������룬�ô˺����ɱ���
	static function zhsubstr_utf8($str, $len){
		if(strlen($str) <= $len){
			return mb_strcut($str, 0, $len,'utf-8');
		}else{
			return mb_strcut($str, 0, $len-2,'utf-8')."..";
		}
	}
	
	//����ת����
	static function object_to_array($obj){
//		$_arr = is_object($obj) ? get_object_vars($obj) : $obj;
//		$_arr = is_object($obj) ? (array)$obj : $obj;
		$_arr = (array)$obj;

		foreach ($_arr as $key => $val){
			$val = (is_array($val) || is_object($val)) ? self::object_to_array($val) : $val;
			$arr[$key] = $val;
		}
		return $arr;
	}
	
	//����ת����(����һ���������ǣ��˷���֮����public�ĳ�Ա����)
	static function o2a($object){
		$array = array();
		foreach($object as $key => $value){
			$array[$key] = (is_array($value) || is_object($value)) ? self::o2a($value) : $value;
		}
		return $array;
	}
	
	/**
	 * ֧��˽�����ԵĶ���ת���飬ͬʱȥ�������ռ�
	 * ����˵����
	 * �뱣��˽�б���ת����ֻ��$_arr = (array)$obj;ע���ⲽת�꣬���������˽�б����������������ռ䣬��ôKEY����������
	 * �������ַ�������������� \0 ���ַ�����KEY��������addslashes()�󼴿����Σ����߽�����json_encode()Ҳ��������,����
	 * ���˵����У���������������޷���ȡ������ $arr["aa"]�����aa��˽�б����Ͷ�������������ת��JSONҲ����ֶ����ַ�
	 * @author YueYa
	 * @param $obj
	 * @return mixed
	 */
	public static function o2a_ns($obj){
		$_arr = (array)$obj;//ע���ⲽת�꣬���������˽�б�������ôKEY�����������ַ�������������� \0 ���ַ�
		foreach ($_arr as $key => $val){
			$key = addslashes($key);//���ⲽ����\0�������ַ�����
			if(strpos($key, "\\") !== false){//������з�б�ܣ�˵���������ռ����˽�б�������Ҫ�����£�
				$key = strrchr($key, "\\0");//ȡ\0���Ժ���ַ����������ռ��˽�б�����������Ϊ�߽�
				$key = trim(str_replace("\\0", "", $key));//ȥ��\0
			}
			$val = (is_array($val) || is_object($val)) ? self::o2a_ns($val) : $val;//�ݹ�
			$arr[$key] = $val;
		}
		return $arr;
	}
	
	// �ж��� EMAIL
	static function isemail($logincode){
		if(strlen($logincode) > 6 && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $logincode)){
			return true;	
		}else {
			return false;	
		}
	}
	
	// �ж��� �ֻ���
	static function ismobile($logincode){
		if(preg_match("/^13[0-9]{9}$|15[0-9]{9}$|18[0-9]{9}$/", $logincode)){
			return true;
		}else {
			return false;	
		}
	}

	//�ж��Ƿ���IP
	static function isip($ipaddres) {
		$preg="/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";
		if(preg_match($preg,$ipaddres))return true;
		return false;
	}
	
	static function curlget($url){
		$ch = curl_init();  
		curl_setopt($ch, CURLOPT_URL, $url);  
		curl_setopt($ch, CURLOPT_HEADER, false);  
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
		curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11');  
		  
		$res = curl_exec($ch);  
		$rescode = curl_getinfo($ch, CURLINFO_HTTP_CODE);   
		curl_close($ch) ;  
		//echo $res;
		return $res;
	}
	
	static function curlpost($url, $params){
		$ch = curl_init();
	    curl_setopt($ch, CURLOPT_HTTPHEADER, array("content-type: application/x-www-form-urlencoded; charset=UTF-8"));
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_POST, 1);//����ΪPOST��ʽ
		curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_FAILONERROR, true);
		curl_setopt($ch, CURLOPT_TIMEOUT, 30);
		$data = curl_exec($ch);
		curl_close($ch);
		return $data;
	}
	
	//CURLPOST https��
	static function httpscurl($url, $params, $timeout = 30){
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//SSL֤����֤
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//�ϸ���֤
		curl_setopt($ch, CURLOPT_HEADER, 0 ); // ����HTTPͷ
		curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);// ��ʾ������
		curl_setopt($ch,CURLOPT_POST,true); // post��������
		curl_setopt($ch,CURLOPT_POSTFIELDS, $params);// post��������
		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
		$responseText = curl_exec($ch);
		curl_close($ch);
		return $responseText;
	}

	static function u2g($str){
		return iconv("utf-8", "gbk", $str);	
	}
	
	//��ע�����
	public static function filter($str, $type = 0){
		switch($type){
			case 1 : return preg_replace("/[\"\\\']|(count)|(%20)|(char)/i", "", trim(addslashes($str)));//���˵�'"\ ֻȥ�����߿ո�
			default : return preg_replace("/[\"\\\']|( )|(count)|(%20)|(char)/i", "", trim(addslashes($str)));//���˵�'"\ ȥ�����пո�
		}
	}
	
	/**
	 * ����ת�ļ�
	 * @param string $file �ļ��� 
	 * @param array $array ���� 
	 */
	static function mkarrfile($file, $array){
		return file_put_contents($file, "<?php \nreturn ".var_export($array, true).";\n?>");
	}
	
	/**
	 * ����ת�ļ�
	 * @param string $file �ļ��� 
	 * @param object $obj ���� 
	 */
	static function mkobjfile($file, $obj){
		return file_put_contents($file, "<?php return '".serialize($obj)."';?>");
	}

	/**
	 * ɾ����KEY������ָ��KEY��Ԫ��
	 */
	static function array_remove(&$data, $key){
		if(array_key_exists($key, $data)){
			$keys = array_keys($data);
			$index = array_search($key, $keys);
			if($index !== FALSE){
				array_splice($data, $index, 1);
			}
		}
	}
	
}

?>